package com.test.controller;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("save")
public class RoleAnnotationController {

    /**
     * 测试使用: 1.代码的方式 2. 注解的方式  控制访问权限
     * @return
     */
    @RequiresRoles("super")    // 2 . 当用户拥有此角色 或者权限的时候才可以进入此方法
    @RequiresPermissions("user:update:01")  //  2 . 用来判断权限字符串
    @RequestMapping("/order")
    public String saveOrder() {
        // 1.代码的方式判断 控制用户的访问权限
        //获取已经认证的用户主体
        Subject subject = SecurityUtils.getSubject();
        System.out.println("----------------进入订单方法-------------------");
        if (subject.hasRole("order")) {
            //如果有相关权限,则执行正常业务
            System.out.println("拥有权限,正常执行...");
        } else {
            System.out.println("没有权限,可以跳转到没有权限友好页面");
        }
        return "redirect:/index.jsp";
    }
}
